home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / yacc / occam.lha / occam / test4 < prev   
Text File  |  1989-08-22  |  1KB  |  81 lines

  1.  
  2.   -- this is another comprehensive exercise of occam syntax
  3.         -- pjmp @ hrc 31/7/86
  4. VAR fred, joe[BYTE - #fAf], bill[ (20>>2)/\#0F]:
  5. VAR heinz:
  6. CHAN mary,jane[TRUE]:
  7. CHAN sue:
  8. DEF one =1, alphabet="abcdefghijklmnopq"
  9. "rstuvwxyz":
  10. DEF Tablet   = TABLE [ BYTE 0 ]:
  11.  
  12. PROC time =
  13.   mary!NOW
  14. :
  15.  
  16. PROC relay ( CHAN from, to, VAR via ) =
  17.   SEQ
  18.     from?via
  19.     to!via
  20. :
  21.  
  22. PROC zilch ( VALUE t[] ) =
  23.   SKIP
  24. :
  25.  
  26. WHILE NOT FALSE
  27.  
  28.   SEQ
  29.     time
  30.     bill[0]   := TABLE [ 2, 3, 5, 7, 11, 13, 17, 19, 23] [fred]
  31.     WAIT NOW AFTER bill[joe[BYTE 0]]
  32.  
  33.     VAR cats, dogs:
  34.     CHAN raining[ one ]:
  35.     PAR WHICH = [ 0 FOR one ]
  36.       relay( raining[ cats AND dogs], jane[WHICH], alphabet[WHICH] )
  37.  
  38.     zilch( "abc"[2] )
  39.  
  40.     SEQ fred = [ 0 FOR 3 ]
  41.  
  42.     mary!ANY
  43.  
  44.     CHAN jane:
  45.     jane?ANY
  46.  
  47.     PAR
  48.  
  49.     VAR john,tarzan:
  50.     CHAN janet,jane:
  51.     PAR
  52.       janet?john;john
  53.       jane!tarzan; tarzan
  54.  
  55.     IF
  56.       'a' << #2
  57.         IF
  58.  
  59.       IF
  60.         '**' >> ( 1 OR 2 )
  61.           IF fred = [ 0 FOR '*#FF' ]
  62.             fred <> ( alphabet[ fred >< bill[ fred /\ bill [ fred \/ fred ]]] )
  63.               joe := (fred>0) AND (fred<100) AND (fred>='a') AND (fred<='-')
  64.  
  65.     VAR then:
  66.     ALT fred = [ 1+1+1 FOR 2*2*(2-1)+(4\2)*(2/2) ]
  67.       ALT
  68.         ALT
  69.         SKIP
  70.           SKIP
  71.         fred = 3 & SKIP
  72.           SKIP
  73.         fred >3 & WAIT NOW
  74.           SKIP
  75.         WAIT NOW AFTER then
  76.           SKIP
  77.         fred < 20 & mary?ANY
  78.           then := NOW
  79.         jane[fred]?then
  80.           then := then + 4
  81.